#!/usr/bin/env python3
"""RAG系统最终测试"""
from pathlib import Path
import sys
project_root = Path(__file__).parent.parent
sys.path.append(str(project_root))
from core.rag_manager import RAGManager

def final_test():
    print("🚀 RAG系统最终测试")
    print("=" * 50)
    
    # 初始化RAG系统
    print("1. 初始化RAG系统...")
    rag = RAGManager()
    print(f"   ✅ 系统就绪: {rag.is_ready()}")
    
    # 显示系统信息
    print("\n2. 系统信息:")
    info = rag.get_knowledge_base_info()
    print(f"   📊 向量数量: {info['vector_count']}")
    print(f"   🤖 LLM就绪: {info['llm_ready']}")
    print(f"   🔤 嵌入模型就绪: {info['embedding_ready']}")
    
    # 添加测试文档
    print("\n3. 添加知识文档...")
    
    # 添加关于Python的文档
    python_doc = """
    Python是一种高级编程语言，由Guido van Rossum于1991年首次发布。
    Python设计哲学强调代码的可读性和简洁的语法（尤其是使用空格缩进划分代码块，而非使用大括号或者关键词）。
    相比于C++或Java，Python让开发者能够用更少的代码表达想法。
    Python支持多种编程范式，包括面向对象、命令式、函数式和过程式编程。
    Python拥有动态类型系统和垃圾回收功能，能够自动管理内存使用。
    """
    
    result1 = rag.add_text(python_doc, metadata={"source": "Python介绍", "type": "编程语言"})
    print(f"   ✅ Python文档: {result1['success']}")
    
    # 添加关于机器学习的文档
    ml_doc = """
    机器学习是人工智能的一个分支，它使计算机能够在没有明确编程的情况下学习。
    机器学习专注于开发计算机程序，这些程序可以访问数据并使用它来为自己学习。
    学习过程从观察或数据开始，如例子、直接经验或指令，以便在数据中寻找模式。
    机器学习算法分为三大类：监督学习、无监督学习和强化学习。
    常见的机器学习应用包括图像识别、自然语言处理、推荐系统和预测分析。
    """
    
    result2 = rag.add_text(ml_doc, metadata={"source": "机器学习介绍", "type": "AI技术"})
    print(f"   ✅ 机器学习文档: {result2['success']}")
    
    # 更新后的系统状态
    print("\n4. 更新后的系统状态:")
    info = rag.get_knowledge_base_info()
    print(f"   📊 向量数量: {info['vector_count']}")
    print(f"   📄 文档数量: {info['statistics']['total_documents']}")
    print(f"   🧩 文本块数量: {info['statistics']['total_chunks']}")
    print(f"   📚 数据源: {', '.join(info['statistics']['sources'])}")
    
    # 测试问答功能
    print("\n5. 测试问答功能:")
    
    questions = [
        "什么是Python？",
        "机器学习有哪些类型？",
        "Python和机器学习有什么关系？"
    ]
    
    for i, question in enumerate(questions, 1):
        print(f"\n   问题 {i}: {question}")
        answer = rag.ask_question(question)
        if answer['success']:
            print(f"   回答: {answer['answer'][:200]}...")
            print(f"   来源数量: {len(answer['sources'])}")
        else:
            print(f"   ❌ 回答失败: {answer['answer']}")
    
    # 测试搜索功能
    print("\n6. 测试搜索功能:")
    search_queries = ["编程语言", "学习算法", "数据"]
    
    for query in search_queries:
        print(f"\n   搜索: '{query}'")
        results = rag.search_documents(query, k=2)
        print(f"   找到 {len(results)} 个相关文档:")
        for result in results:
            print(f"     - {result['source']}: {result['content'][:100]}...")
    
    # 导出知识库摘要
    print("\n7. 知识库摘要:")
    summary = rag.export_knowledge_base_summary()
    print(summary)
    
    print("\n🎉 RAG系统测试完成！")
    print("=" * 50)

if __name__ == "__main__":
    final_test() 